/**
 * 面试编程题 写一个函数
 * 传统的面向对象 实例
 * dog Object 实例出来 原型链
 * dog.__proto__-> == b.prototype b是a的原型对象
 * dog.__proto__.__proto.__...->null  b 是 a 原型链上的对象
 * instanceof 传统语言中判断的是a是b的实例
 * js 中instanceof 运算符用于判断构造函数的prototype属性是否出现在对象的原型链的任何位置
 * @func instanceof 实现
 * @params a 是实例 b 对象
 * @return boolean 
 */
function Cat(){

}
function Dog(){

}
Dog.prototype.sayHi=function(){

}
function myInstanceof(a,b){

  let proto=Object.getPrototypeOf(a);// api
  let prototype=b.prototype;
  //if(proto==b.prototype)
  //return true;
  while(true){
      if(!proto){
return false
      }
      if(proto==prototype) return true;
      proto=Object.getPrototypeOf(proto);
  }
  //console.log(proto,a.__proto__)
}
const dog=new Dog();
console.log(myInstanceof(dog,Dog));
console.log(myInstanceof(dog,Object));
console.log(myInstanceof(dog,Cat));
